package dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import utilidades.Constants;
import utilidades.ConstantsBusiness;
import vo.EquipoVO;
import vo.EstadoVO;
import vo.JugadorVO;
import exception.DaoException;

public class JugadorDAO extends DAOObjectImpl{
				
	public JugadorDAO(Connection aConexion) {
		this.conexion=aConexion;
		load_query =  ConstantsBusiness.JUGADOR_LOAD;
	}

	/**
	 * Obtiene los datos del jugador con el identificador pasado como parametro
	 * @param aCrieria Datos del jugador a buscar
	 * @return JugadorVO con los datos del jugador
	 * @throws DaoException Posible excepcion a controlar
	 */
	public Object load(Object aCrieria) throws DaoException {
		String tmpQuery = Constants.CADENA_VACIA;
		ResultSet tmpDatos = null;	
		PreparedStatement tmpSentencia = null;
		JugadorVO tmpResultado = null;
		try{
			tmpQuery = ConstantsBusiness.JUGADOR_LOAD;
			tmpSentencia=conexion.prepareStatement(tmpQuery);
			tmpSentencia.setLong(1, ((JugadorVO)aCrieria).getIdJugador());
			tmpDatos = tmpSentencia.executeQuery();
			if (tmpDatos.next()){				
				tmpResultado = new JugadorVO(
						tmpDatos.getInt("idJugador"),
						tmpDatos.getString("nombre"),
						tmpDatos.getInt("precio"), 
						new EstadoVO(tmpDatos.getInt("idEstado")), 
						tmpDatos.getInt("idPosicion"), 
						new EquipoVO(tmpDatos.getInt("idEquipo")), 
						tmpDatos.getInt("progresion"), 
						((JugadorVO)aCrieria).getPuntos(), 
						tmpDatos.getInt("puntos"), 
						tmpDatos.getInt("media"),
						tmpDatos.getString("imagen"));
			}
			return tmpResultado;
		} catch (SQLException aSqlException){
			throw new DaoException(aSqlException.getMessage());
		} finally {
			try{
				if (tmpDatos!=null){
					tmpDatos.close();
				}
				if (tmpSentencia!=null){
					tmpSentencia.close();
				}
			}catch(SQLException aSqlException){
				throw new DaoException(aSqlException.getMessage());
			}					
		}
	}
	
}
